package ar.com.algotres.tpdos.modelo.tablero;

import java.util.Map;
import java.util.TreeMap;

import ar.com.algotres.tpdos.modelo.fisica.CoordenadasDePosicioInvalidaException;
import ar.com.algotres.tpdos.modelo.fisica.Posicion;

public class Casilleros {

	private Map<Posicion, Casillero> casilleros;

	public Casilleros(Integer cantidad)
			throws CoordenadasDePosicioInvalidaException {
		super();
		casilleros = this.llenarDeAgua(cantidad);
	}

	public Casillero dameCasilleroEn(Integer x, Integer y)
			throws CoordenadasDePosicioInvalidaException {
		Posicion posicion = new Posicion(x, y);
		return casilleros.get(posicion);
	}

	public Map<Posicion, Casillero> getCasilleros() {
		return casilleros;
	}

	// TODO: cambiar null por algun estado que represente mejor el valor agua
	private Map<Posicion, Casillero> llenarDeAgua(Integer cantidad)
			throws CoordenadasDePosicioInvalidaException {
		casilleros = new TreeMap<>();
		for (int i = 0; i < cantidad; i++) {
			for (int j = 0; j < cantidad; j++) {
				Posicion posicion = new Posicion(i + 1, j + 1);
				casilleros.put(posicion, new Casillero(posicion, null));
			}
		}
		return casilleros;
	}

	public void ponerCasillerEn(Casillero value) {
		casilleros.put(value.getPosicion(), value);
	}
}
